package y2015.date0916am.多线程聊天室.TcpClient;

import org.junit.jupiter.api.Test;

import java.io.*;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

public class TcpClient {
    @Test
    public void main() throws Exception {
        int port = 9527;
        String host = "127.0.0.1";
        Socket socket = null;
        PrintWriter pw = null;//向文本输出流打印对象的格式化表示形式。
        InputStream in = null;//用以接收服务器数据的输入流
        OutputStream out = null;//用以向服务端发送数据
        BufferedReader read = null;//从字符输入流中读取文本，缓冲各个字符，从而实现字符、数组和行的高效读取。
        Scanner scanner = null;//接收用户输入
        String line = null;//接收服务端数据

        //创建一个流套接字并将其连接到指定主机上的指定端口号。
        try {
            socket = new Socket(host, port);
            System.out.println("【系统】已成功连接到服务器");
            //接收服务端欢迎语
            in = socket.getInputStream();
            read = new BufferedReader(new InputStreamReader(in));

            line = read.readLine();
            System.out.println("【服务端】" + line);
            // 向服务端发送数据
            out = socket.getOutputStream();
//			根据现有的 OutputStream 创建不带自动行刷新的新 PrintWriter。
            pw = new PrintWriter(out);
            scanner = new Scanner(System.in);
            String input;
            while (true) {
//				System.out.println("【系统】请输入：");
                DateAndTime inputTime = new DateAndTime();
                System.out.println(inputTime.getDateAndTime() + "我：");
                input = scanner.nextLine();//接收用户输入
                //发送
                pw.println(input);
                pw.flush();//刷新
//				System.out.println("【客户端】"+input);
                if ("exit".equalsIgnoreCase(input)) {
                    System.out.println("【系统】再见！！！");
                    break;
                }
            }
        } catch (UnknownHostException e) {

            e.printStackTrace();
            System.out.println("服务器连接失败！");
        } catch (IOException e) {

            e.printStackTrace();
            System.out.println("服务器连接失败！");
        } finally {
            // 结束
            if (pw != null) {
                pw.close();
            }
            if (read != null) {
                try {
                    read.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }


    }
}

